package com.async.domain.service;

import com.async.domain.entity.AsyncReq;
import com.async.dto.PageInfoDto;

import java.util.List;

/**
 * <p>
 * 异步执行接口
 * </p>
 * @author yang
 * @date 2024/5/17
 */
public interface AsyncReqService {

    /**
     * 保存
     */
    void save(AsyncReq asyncReq);

    /**
     * 更新状态
     */
    void updateStatusAndExecCount(Long id, Integer execStatus);

    /**
     * 删除
     */
    void delete(Long id);

    /**
     * 根据ID查询
     */
    AsyncReq getById(Long id);

    /**
     * 自动重试
     */
    List<AsyncReq> listRetry();

    /**
     * 自动补偿
     */
    List<AsyncReq> listComp();

    /**
     * 人工执行
     */
    void listAsyncPage(PageInfoDto<AsyncReq> pageInfo);

    List<AsyncReq> getByIds(List<Long> ids);

    void batchUpdate(List<Long> executeFailedIds, int status);
}
